package com.github.kezhenxu94.playground.java.interview.netease;

import java.util.Scanner;

/**
 * 分苹果
 * 
 * n 只奶牛坐在一排，每个奶牛拥有 ai 个苹果，现在你要在它们之间转移苹果，使得最后所有奶牛拥有的苹果数都相同，
 * 每一次，你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上， 问最少需要移动多少次可以平分苹果，如果方案不存在输出 -1。 输入描述:
 * 每个输入包含一个测试用例。 每个测试用例的第一行包含一个整数 n（1 <= n <= 100），
 * 
 * 接下来的一行包含 n 个整数 ai（1 * <= ai <= 100）。
 * 
 * 
 * 输出描述: 输出一行表示最少需要移动多少次可以平分苹果，如果方案不存在则输出 -1。
 * 
 * 输入例子: 4 7 15 9 5
 * 
 * 输出例子: 3
 * 
 * @author KeZhenxu
 *
 */
public class NetEaseDivideApple {

	static class Main {
		public static void main(String[] args) {
			Scanner scanner = new Scanner(System.in);
			int num = scanner.nextInt();
			int[] array = new int[num];
			for (int i = 0; i < num; i++)
				array[i] = scanner.nextInt();
			Main main = new Main();
			System.out.println(main.divide(array, 0, array.length - 1, 0));
			scanner.close();
		}

		private int divide(int[] array, int from, int to, int countSoFar) {
			int sum = 0;
			for (int i = from; i <= to; i++)
				sum += array[i];
			if (sum % (to - from + 1) != 0)
				return -1;
			int average = sum / (to - from + 1);

			int count = 0;
			for (int i = from; i <= to; i++) {
				if (array[i] != average) {
					int difference = Math.abs(array[i] - average);
					if (difference % 2 != 0)
						return -1;
					count += difference / 2;
				}
			}
			return count / 2;
		}
	}
}
